]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
Revert "status/keyboard: Track ::layout-layout-group-changed for changes"
authorSebastian Keller <skeller@gnome.org>
Tue, 28 Oct 2025 22:22:26 +0000 (23:22 +0100)
committerSebastian Keller <skeller@gnome.org>
Tue, 28 Oct 2025 22:59:21 +0000 (23:59 +0100)
This reverts commit e8d73262c73246205e8f7887d99aeb2356cfa89e.

The commit was causing freezes when changing layouts in some situations
and not all of these were adressed by f643915b, such as when switching
from the 3rd to the 4th layout using a xkb shortcut in the X11 session
with 4 layouts.

It was also breaking the order of switching layouts using modifier-only
xkb shortcuts to switch to the next group, which it caused to advance
multiple groups because of the shortcut being handled via both
_modifiersSwitcher() and _layoutGroupChanged().

Further it was possible for _layoutGroupChanged() to trigger an error
due to the locale layout added by _buildGroupStrings() at the end of the
xkb layout list being accessible via the xkb shortcuts. That layout was
not present in _inputSources, leading to "is" being undefined.

Reopens: https://gitlab.gnome.org/GNOME/mutter/-/issues/3926
Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/8738
Related: https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3930
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3939>

js/ui/status/keyboard.js

index 88e6e93975d8796c2bd210be0f89ae8771f21252..2f6773c8c097efaf24a612d2795d9e1abd2ec87c 100644 (file)
@@ -380,7 +380,6 @@ export class InputSourceManager extends Signals.EventEmitter {
         this._ibusManager.connect('set-content-type', this._ibusSetContentType.bind(this));
 
         global.display.connect('modifiers-accelerator-activated', this._modifiersSwitcher.bind(this));
-        global.backend.connect('keymap-layout-group-changed', this._layoutGroupChanged.bind(this));
 
         this._sourcesPerWindow = false;
         this._focusWindowNotifyId = 0;
@@ -429,12 +428,6 @@ export class InputSourceManager extends Signals.EventEmitter {
         return true;
     }
 
-    _layoutGroupChanged(backend, idx) {
-        const is = this._inputSources[idx];
-        this._currentInputSourceChanged(is);
-        this._keyboardManager.apply(is.xkbId);
-    }
-
     _switchInputSource(display, window, event, binding) {
         if (this._mruSources.length < 2)
             return;